-- 1.编写一个lua脚本,首先需要分析需要的参数
-- 1.1 优惠券id---获取库存
-- 1.2 用户id---判断是否下单
-- 1.3 订单id---向消息队列发送的信息
local voucherId = ARGV[1]
local userId = ARGV[2]
local orderId = ARGV[3]

local voucherKey = "seckill:stock:" .. voucherId
local orderKey = "seckill:order:" .. voucherId

-- 2.判断是否有资格下单
-- 2.1 判断库存
if (tonumber(redis.call('get', voucherKey)) <= 0) then
    -- 2.1.1 库存不足,返回1
    return 1
end
-- 2.2 判断是否已下单
if(redis.call('SISMEMBER',orderKey,userId) == 1) then
    -- 2.2.1 用户已经下单,返回2
    return 2
end

-- 3. 执行业务
-- 3.1 扣减库存
redis.call('incrby',voucherKey,-1)
-- 3.2 存入set集合
redis.call('sadd',orderKey,userId)

-- 4.发送消息到消息队列
redis.call('XADD','stream.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
-- 返回0
return 0